// 该文件就是写路由配置的地方

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)

import {
  getToken
} from '@/utils/token';
//导入页面 @代表: src  【难倒不难，仔细点】
import Login from '@/views/login/Login.vue'
import Layout from '@/views/layout/Index.vue'
import Chart from '@/views/layout/chart/Index.vue'
import User from '@/views/layout/user/Index.vue'
import Enterprise from '@/views/layout/enterprise/Index.vue'
import Question from '@/views/layout/question/Index.vue'
import Subject from '@/views/layout/subject/Index.vue'

const routes = [{
    path: '/login',
    //单词不要写错
    component: Login
  },
  {
    path: '/layout',
    component: Layout,
    redirect:'/layout/user',//路由重定向
    children: [   
      //要注意:以 / 开头的嵌套路由会被当做根路径,这让你充分的使用嵌套组件而无需设置嵌套路径
      //所以这边路径不要加 /
      { path: 'chart', component: Chart },
      { path: 'user', component: User },
      { path: 'enterprise', component: Enterprise },
      { path: 'question', component: Question },
      { path: 'subject', component: Subject }
    ]

  },
  //路由重定向
  {
    path: '/',
    redirect: '/login'
  },
]

const router = new VueRouter({
  // routes这个属性,就叫这个不要乱写
  routes
})
/**
 * 只要是路由跳转,无论是通过编程式导航或是手动输入地址跳转,都会进入该回调函数中
 * to : 跳转到哪个页面中去
 *  from : 跳转之前的路径
 * next: 能不能跳转,以及能跳转到哪里去,如果不调用next,就会卡在这里
 */

router.beforeEach((to, from, next) => {
  // console.log(to); 
  // console.log(from);
  //如果是登录页面,则直接放行
  //如果不是登录页面,需要先进行判断,如果有权限则放行,没有权限则跳回登录页面
  if (to.path === '/login') {
    next()
  } else {
    const token = getToken()
    if (token) {
      next()
    } else {
      next('/login')
    }
  }

})



//es6中的默认导出
export default router